Hiten's Blog.

解决ListView FootView不能完全隐藏

字数统计: 260阅读时长: 1 min
2015/10/11 Share

写过Android ListView加载更多功能的朋友可能都知道,我们经常会写一个footView,
通过设置ListView的addFootView方法增加尾布局,在列表滑动到底部的时候,触发footViw显示,
当没有更多数据的时候,会把footView隐藏。
但是在设置footView为gone时,虽然内容隐藏了,但是这块布局还在占着,像是设置成inVisible一样,我总结网上的解决方法,
有两种一般性解决方案:

1、设置padding

需要隐藏的时候调用

1
2
this.footerLayout.setVisibility(View.GONE);
this.footerLayout.setPadding(0, -footerLayout.getHeight(), 0, 0);

需要显示的时候,再把pading设回来

1
2
this.footerLayout.setVisibility(View.GONE);
this.footerLayout.setPadding(0, -footerLayout.getHeight(), 0, 0);

2、套父布局

套父布局思路:

  • 1、用inflate方法得到布局对应的footerView
  • 2、创建一个ViewGroup为rootFootView
  • 3、rootFootView add footerView
  • 4、ListView设置addFootView(rootFootView)
  • 5、直接调用footView的setVisibility方法为gone或者visible即可
1
2
3
4
5
6
7
8
9
//设置footView
footView = layoutInflater.inflate(R.layout.footer_loadmore_listview, this, false);
rootFootView = new FrameLayout(getContext());
rootFootView.addView(footView);
listView.addFootView(rootFootView);

//调用
footView.setVisibility(GONE);//隐藏
footView.setVisibility(VISIBLE);//显示
CATALOG
  1. 1. 1、设置padding
  2. 2. 2、套父布局